package com.example.springboottest.example.serialize.nien;

import com.alibaba.fastjson.JSONObject;
import com.google.gson.GsonBuilder;

/**
 * 在实际开发中，目前主流的策略是：Google 的 Gson 库和阿里的 FastJson 库两者结合使用。
 * 在POJO 序列化成 JSON 字符串的应用场景，使用 Google 的 Gson 库；
 * 在JSON 字符串反序列化成 POJO的应用场景，使用阿里的 FastJson 库。
 */
public class JsonUtil {
    //谷歌 GsonBuilder 构造器
    static GsonBuilder gb = new GsonBuilder();

    static {
        //不需要 html escape
        gb.disableHtmlEscaping();
    }

    //序列化：使用谷歌 Gson 将 POJO 转成字符串
    public static String pojoToJson(java.lang.Object obj) {
        //String json = new Gson().toJson(obj);
        String json = gb.create().toJson(obj);
        return json;
    }

    //反序列化：使用阿里 Fastjson 将字符串转成 POJO 对象
    public static <T> T jsonToPojo(String json, Class<T> tClass) {
        T t = JSONObject.parseObject(json, tClass);
        return t;
    }
}